Unity公式サンプルDragon Crashersを読み解く
概要
タイトルから先に進むと、タイムラインの演出が再生されます 序盤に木と蜘蛛が手前が被写界深度のエフェクトが掛かったようにぼやけて表示されます
この木は Sprite Shape Renderer
で描画されています
Sprite Shape Controller
でブラーを掛けてぼやかしています
Sprite Sharp
Sprite(画像)を自分で作成したパスに沿ってタイリングして描画する手法
Sprite Sharp Controller の Edit Spline を押して形を変更してみます
SceneEditorから木のポイントを自由に動かしてみます
Tangent Mode が Linear になっているため、ポイントとポイントを直線で結びつけてその中は指定された画像が描画されます
真ん中のContinuousはベジェ曲線で形を作ることができる 一番右のBrokenはポイント同士の曲線それぞれが切り離された調整ができるようになる
Unityの公式が動画含めとてもわかり易いです https://blog.unity.com/ja/technology/intro-to-2d-world-building-with-sprite-shape
塗りつぶしは Fill 項目のoffsetをいじると確認できます ここに指定できるテクスチャはAtlasではなく独立されていること、そして Wrap Mode を Repeat に設定することが必須のようです
配置されるテクスチャ自体がボケておりこれで被写界深度のような見た目を再現しているようです 塗りつぶしテクスチャは真っ黒なシンプルなもの
SpriteShapeGeometryCache
SpriteShapeControllerの下に SpriteShapeGeometryCache
コンポーネントがついてます
SpriteShape に含まれるコンポーネントです。
再生時にポイントからジオメトリを求めるのではなく、予めEditor機能で生成されたデータをこのコンポーネントに記憶させ、再生時に利用することでCPUやメモリを優しくさせます
これを利用するためには、Sprite Shape Controller の Edit Spline を押したときに出てくる Cache Geometry
にチェックを入れる必要があります
チェック時、Editor機能で自動で AddComponent されます。 また、キャッシュを利用する場合は Fill Tessellation(C# Job) の利用はしないほうが良いとのことです。
Fill Tessellation(C# Job) を利用したときはマルチスレッドで塗りつぶしジオメトリ生成を計算するためパフォーマンスを向上させます。 利用しない場合はメインスレッドで処理されます。
キャッシュを利用する場合はそもそも生成処理の際に保存データを利用するためJobSystemで動的にデータを生成する必要がなく、無効化していたほうが都合が良い(Jobにチェックを入れないほうが便利なことがある) ようです
※ Tessellationとはある空間内のジオメトリを分割することで、Fill Tessellationは指定された塗りつぶし範囲を指定されたテクスチャで描画させるために適切な数を分割してくれる機能ということになります。